package com.sanpu.kxe.business.trade.provider;

import android.content.Context;

import com.sanpu.kxe.business.trade.bean.PayCollectionOutput;
import com.sanpu.kxe.business.trade.bean.PayOrderOutput;
import com.sanpu.kxe.business.trade.bean.PaymentOutput;
import com.sanpu.kxe.business.trade.bean.SupportBankOutput;
import com.sanpu.kxe.common.enums.PayType;

import java.math.BigDecimal;
import java.util.List;

import rx.Observable;

/**
 * Description：交易模块对外接口
 * Created by 薛勇军 on 2018/8/1.
 */

public interface ITradeProvider {

    /**
     * 打开扫码收款
     */
    void openPaymentQRcodeActivity(Context context, String vipOpenId, PayType payType,
                                   String reqAmount, String appCnlConfId);

    /**
     * 打开账单
     */
    void openTransactionActivity(Context context);

    /**
     * 打开我的返佣
     */
    void openMyRebTotalActivity(Context context, int currentItem);

    /**
     * 打开提现
     * @param withdrawMoney 可提现收益
     */
    void openWithdrawActivity(Context context, String withdrawMoney);

    /**
     * 打开话费流量充值
     */
    void openChargerTelFeeActivity(Context context);

    /**
     * 收款
     */
    void openGatheringActivity(Context context, boolean isPersonal);

    /**
     * 生成支付订单
     * @param payAmount 支付金额
     * @param payType   支付渠道类型  如QQ、微信
     * @param constype  支付类型 如花费、流量（充值会员 recharge  扫码  consume）
     * @param pkgId     套餐id
     * @param phoneNo   手机号码
     * @return
     */
    Observable<PaymentOutput> userPayment(String payAmount, String payType, String constype,
                                          String pkgId, String phoneNo);

    /**
     * 会员统一下单
     * @param amount 支付金额
     * @param appCnlConfId APP通道Id
     * @param vipOpenId 会员套餐id
     */
    Observable<PayOrderOutput> payOrder(String amount, String appCnlConfId, String vipOpenId);

    /**
     * 商城统一下单
     * @param amount 支付金额
     * @param appCnlConfId APP通道Id
     * @param outTradeNo 订单id
     */
    Observable<PayOrderOutput> payOrder(BigDecimal amount, String appCnlConfId, String outTradeNo);

    /**
     * 渠道列表
     */
    Observable<List<PayCollectionOutput>> appCnlConfList(String receivablesType, String mercCardId, String version);

    /**
     * 返佣明细
     */
    void openRebTotalListActivity(Context context);

    /**
     * H5表单提交
     */
    void openQuickPayWebViewActivity(Context context, String webUrl, String postData);

    /**
     * 获取APP通道配置银行限额列表
     * @param appCnlConfId 通道配置Id
     */
    Observable<List<SupportBankOutput>> findAppCnlConfBankSupportDetailList(String appCnlConfId);

    /**
     * 我的分红
     */
    void openMyProfitActivity(Context context);
}
